/* **********************************************************
 * Copyright (c) 2007-2008 VMware, Inc.  All rights reserved.
 * **********************************************************/

/*
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * * Redistributions of source code must retain the above copyright notice,
 *   this list of conditions and the following disclaimer.
 *
 * * Redistributions in binary form must reproduce the above copyright notice,
 *   this list of conditions and the following disclaimer in the documentation
 *   and/or other materials provided with the distribution.
 *
 * * Neither the name of VMware, Inc. nor the names of its contributors may be
 *   used to endorse or promote products derived from this software without
 *   specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL VMWARE, INC. OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
 * DAMAGE.
 */

/* Copyright (c) 2003-2007 Determina Corp. */
/* Copyright (c) 2002-2003 Massachusetts Institute of Technology */
/* Copyright (c) 2002 Hewlett-Packard Company */

#if !defined(AFX_OPTIONSDLG_H__0BDD6058_E38D_4CEA_805C_DE47B633EEF9__INCLUDED_)
#define AFX_OPTIONSDLG_H__0BDD6058_E38D_4CEA_805C_DE47B633EEF9__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// OptionsDlg.h : header file
//

/////////////////////////////////////////////////////////////////////////////
// COptionsDlg dialog

class COptionsDlg : public CDialog
{
    // Construction
public:
    BOOL CheckLibraryExists(TCHAR *libname, BOOL notify);
    static BOOL CheckOptionsVersusDllType(DLL_TYPE dll_type);
    COptionsDlg(CWnd* pParent = NULL);   // standard constructor
    BOOL OnInitDialog();

    // Dialog Data
    //{{AFX_DATA(COptionsDlg)
    enum { IDD = IDD_OPTIONS };
    CButton m_OKButton;
    CString m_opstring;
    CString m_HotThreshold;
    CString m_InstrLibName;
    CString m_CacheBBMax;
    CString m_CacheTraceMax;
    CString m_LogLevel;
    CString m_LogMask;
    //}}AFX_DATA


    // Overrides
    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(COptionsDlg)
protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
    //}}AFX_VIRTUAL

    // Implementation
protected:
    BOOL UpdateValue(int param);
    void DisableCheckbox(int id);
    BOOL CheckOpstring();
    void RemoveOption(int param);
    void CheckOption(int param);

    // Generated message map functions
    //{{AFX_MSG(COptionsDlg)
    virtual void OnOK();
    afx_msg void OnHotThreshold();
    afx_msg void OnBrowseInstrlibname();
    afx_msg void OnInstrlibname();
    afx_msg void OnLoggingButton();
    afx_msg void OnChangeOptionsEdit();
    afx_msg void OnCacheBBMax();
    afx_msg void OnCacheTraceMax();
    afx_msg void OnLoglevel();
    afx_msg void OnLogmask();
    afx_msg void OnProfPcs();
    afx_msg void OnProfCounts();
    afx_msg void OnStats();
    afx_msg void OnNotify();
    afx_msg void OnNullcalls();
    afx_msg void OnNolink();
    afx_msg void OnNoasynch();
    afx_msg void OnTraceDumpText();
    afx_msg void OnTraceDumpBinary();
    afx_msg void OnTraceDumpOrigins();
    afx_msg void OnChangeEditInstrlibname();
    afx_msg void OnSetPermanent();
    afx_msg void OnChangeEditCacheBbMax();
    afx_msg void OnChangeEditCacheTraceMax();
    afx_msg void OnChangeEditHotThreshold();
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_OPTIONSDLG_H__0BDD6058_E38D_4CEA_805C_DE47B633EEF9__INCLUDED_)
